﻿using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApp5
{
    class 接口
    {
        public 接口()
        {
            Test test = new Test();
            test.Set(10);
            Console.WriteLine("类本身设置之后读取：" + test.Data);
            Console.WriteLine("类中默认初始为null：" + test.GetUserName());

            IT1 test1 = new Test();
            //test1.Data = 20;          // 这里无法设置，因为接口定义为只读
            test1.Set(20);
            Console.WriteLine("实现类设置之后读取：" + test1.Data);
            // 虽然new的Test继承了IT2，但是是以IT1接口使用的，所以无法使用IT2里面定义的
            //test1.UserName = "xxx";   // 会编译报错
        }
    }
    interface IT1
    {
        int Data { get; }
        void Set(int data);
    }
    interface IT2
    {
        string UserName { get; set; }
        string GetUserName();
    }
    interface IT3 : IT1, IT2 { }

    public class Test : IT1, IT2
    {
        // 默认不写get和set就是都包含，但是继承接口的需要添加
        public int Data { get; set; }
        public string UserName { get; set; }    

        public void Set(int data)
        {
            Data = data;
        }

        public string GetUserName()
        {
            return UserName;
        }
    }
}
